Toki Tori 2 ~ ma

File Archive

struct ma_compressed_file_t {
    char unknown1;
    char magic[4];
    int unknown2;
    int data_length_src;
    int unknown3;
    char unknown4;
    int data_length_dst;
    char data[data_length_src];   // compressed with FastLZ.
                                  // Decompresses to be of length `data_length_dst`
                                  // contains a ma_decompressed_file_t
};

struct ma_file_entry_t {
    short name_len;
    char name[name_len];    // null-terminated ascii
    int offset;
    int length;
    int unknown1;
    int unknown2;
};

struct ma_decompressed_file_t {
    int num_files;
    ma_file_entry_t files[num_files];
    char padding[x];    // calculate x so we're 16-byte aligned
    char data[y];       // this is all the file data.
                        // offsets are relative to the start of this array, rather than the struct.
};